iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
AI/ ML & Data

【AI筆記】30天從論文入門到 Pytorch 實戰系列 第 15

【AI筆記】30天從論文入門到 Pytorch 實戰:ControlNet 論文閱讀 Day 14

  • 分享至 

  • xImage
  •  

Paper | 工gin師 YT解說| Control-Net源码分析及实践篇

Stable Diffusion

High-Resolution Image Synthesis with Latent Diffusion Models

Sorry, 我忘記介紹SD了

SD
傳統的擴散模型存在一些缺陷,例如無法有效地控制生成的內容,以及訓練時間過長。
為了解決這些問題,Stable Diffusion提出了一種新的擴散模型。
主要由兩個部分組成:VAE和一個 UNet。VAE 負責將圖像encoding成低維的latent space,並在latent space進行Diffusion 的運算,同時以Cross attention方式,把額外的條件在Unet的每一層特徵進行融合,達到控制生成。
而Loss將變成上述的公式
由模型預測的noise和Ground truth的noise 互相計算L2 LOSS。

在原始論文的架構圖可以看到 SD 本身概念是可以接除了文字以外的條件,但大家好像都沒有 train 他,單純把SD拿來當T2I的模型
https://ithelp.ithome.com.tw/upload/images/20240816/20168385udW4YZQUbC.png
不過這也是有原因的
Stable Diffusion v1 版本的模型單次訓練便需要150000 個A100 GPU Hour。
Stable Diffusion的預訓練採用的LAION-5B數據集共5850億個圖片文本對,需要240TB儲存空間,再結合模型的複雜性,顯然完整預訓練的成本極高:Stable Diffusion的Stability團隊花費超過5000萬美元部署了4,000塊A100 GPU。

另外,我也對T2I Diffusion Model 的整個研究方向進行簡單的分析,以下link供大家參考(但可能會有誤)
https://gitmind.com/app/docs/mg5jmm7c

Conditional T2I model

現有的方法提供的生成控制程度太有限了
不太想要只有一個文字的控制,希望能有多個控制,並將多種控制組合成一起,產生的結果就能符合期待。
HuggingFace Demo

ControlNet

ControlNet 是一種使用額外的條件輸入來控制擴散模型的神經網路結構,它可以提供更細緻和靈活的控制效果。

ControlNet

介紹

一個 task-specific 需要針對不同任務去訓練一個 controlnet,可以在個人設備進行訓練。

  • 條件控制:ControlNet 允許用戶添加條件(如邊緣、深度、分割、人類姿勢等)來控制圖像生成。
  • 穩定性和可擴展性:ControlNet 在小型和大型數據集上都能穩定訓練,並且可以在單個 GPU 上達到與工業模型競爭的結果。
  • 多條件組合:支持多個條件的組合,無需額外的加權或線性插值。

架構流程

  1. 首先controlnet會將大型的Diffusion model的權重複製成一個可訓練的SD encoder layer和一個frozen的SD,frozen的那個會保留他原本學習的圖片,可訓練的則是學習如何有條件的控制。
  2. 可訓練 SD encoder layer 和 特殊的 zero conv layer 連接,他一開始權重會是0,所以一開始不會影響到Frozen SD 生成圖像,但經過逐漸的訓練後他zero conv參數會變化,也會比較穩定。
  3. 訓練穩定性:在小型(<50k)和大型(>1m)資料集上訓練穩定,並且可以在單個 GPU 上進行訓練。

他們後面有在做一些改進,輕量化 ControlNet 移除掉某幾層網路,這樣就不需要大量的記憶體。
另外實驗的時候有發現一個現象: The sudden convergence phenomenon,指在 ControlNet 的訓練過程中,觀察到模型沒有逐漸學習控制條件,而是突然成功地就學會生成與條件相符的高品質圖像。通常會在不到 10K 個step 的時候發生,但他們也不知道為什麼會突然有這個現象。

缺點

ControlNet 需要針對不同的任務進行訓練,因此需要大量的訓練資料和計算資源,進行訓練需要46GB的空間,並且需要針對每個condition進行訓練,因此需要大量的標記資料,以及針對不同任務進行專門的調整和優化。它需要大量的記憶體空間,因為它本身就是一個latent diffusion模型,進行測試和訓練需要46GB的空間,並且需要針對每個condition進行訓練,因此需要大量的標記資料。

總結

ControlNet

  • 不需要重新訓練SD,可以在小資料集上進行微調
  • 需要針對不同的任務進行訓練,因此需要大量的訓練資料和計算資源,以及針對不同任務進行專門的調整和優化。
  • Training stage: batch size=2所需記憶體48GB 。
  • T2I-Adapter 圖像生成速度比 ControlNet 快大約 3 倍

Reference: https://xiqiao.blog.csdn.net/article/details/129152978

後續

有人用 ControlNet 架構去改良
Uni-ControlNet: All-in-One Control to Text-to-Image Diffusion Models
他可以靈活地組合不同類型的控制條件,例如邊緣圖、深度圖、seg mask、CLIP圖像embedding等,來指導圖像生成的過程。只需要在預訓練的T2I擴散模型上微調兩個額外的Adapter,一個是局部控制Adapter,一個是全局控制Adapter,而不需要從頭開始訓練一個新的模型,這樣可以節省大量的計算資源和時間。

但我覺得training的時候又要炸記憶體,就算模型是frozen的狀況下也要回傳梯度紀錄/更新,所以GPU還是需要吃掉資源

Compare

Reference: https://zhuanlan.zhihu.com/p/634540195


上一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:T2I Diffusion Model 論文閱讀 Day 13
下一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:T2I Adapter的工作原理 Day 15
系列文
【AI筆記】30天從論文入門到 Pytorch 實戰26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言